import { Module, DynamicModule, Provider } from '@nestjs/common';
import { ConfigService } from './config.service';
import { UserService } from './user.service';

// 定义模块选项接口
interface OptionalProvidersModuleOptions {
  config?: {
    apiKey?: string;
    timeout?: number;
    baseUrl?: string;
  };
}

@Module({})
export class OptionalProvidersModule {
  // 静态方法用于注册模块并可选地提供配置
  static register(options?: OptionalProvidersModuleOptions): DynamicModule {
    // 准备提供者数组
    const providers: Provider[] = [
      ConfigService,
      UserService,
    ];


    // 如果提供了配置，则添加配置提供者
    if (options?.config) {
      providers.push({
        provide: 'CONFIG_OPTIONS',
        useValue: options.config,
      });
    }

    return {
      module: OptionalProvidersModule,
      providers,
      exports: [ConfigService, UserService],
    };
  }
}